[小ネタ] Amazon Linux の /home に追加EBSをマウントする手順
こんにちは菊池です。
今回はタイトルそのまま、Amazon LinuxのEC2で追加EBSを/homeにマウントする際の注意点と手順です。
オンプレ環境で新規にOSをインストールする場合には何も問題のない作業ですが、AWSでは提供されるAMIから起動するため、単一のルートボリューム(/dev/xvda)にインストールされています。何も考えずに追加したEBSを/homeにマウントすると、ec2-userの公開鍵(authorized_keys)にアクセスできなくなり、sshログインが不可能になったりしますので、少し工夫が必要です。
大まかな手順は以下の通りです。
- 追加EBSをアタッチしてEC2を起動
- 追加EBSにファイルシステムを作成し一度、別のマウントポイントにマウント
- /home以下のファイル/ディレクトリを追加したボリュームに移動
- 追加ボリュームをアンマウントし、/homeにマウント
EBS追加して起動
まずは追加EBSをアタッチしてインスタンスを起動します。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdf 202:80 0 10G 0 disk xvda1 202:1 0 8G 0 disk /
ルートボリュームがxvda1
で、追加されたEBSはxvdf
として認識されています。この時点ではまだマウントされていません。
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/xvda1 7.8G 962M 6.8G 13% / devtmpfs 3.7G 60K 3.7G 1% /dev tmpfs 3.7G 0 3.7G 0% /dev/shm
追加したボリュームにファイルシステムを作成し、一度別のマウントポイントでマウントします。
ファイルシステムを作成。
$ sudo su - # mkfs -t ext4 /dev/xvdf mke2fs 1.42.12 (29-Aug-2014) Creating filesystem with 2621440 4k blocks and 655360 inodes Filesystem UUID: b36b45b0-9655-4c64-b394-8efcda7e316b Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done #
/mnt/data
にマウント
# mkdir /mnt/data # mount /dev/xvdf /mnt/data # df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 7.8G 1.2G 6.5G 16% / devtmpfs 490M 60K 490M 1% /dev tmpfs 498M 0 498M 0% /dev/shm /dev/xvdf 9.8G 23M 9.2G 1% /mnt/data
/homeのデータを追加ボリュームへ移動
追加したボリュームへ、すでにある/home
のデータを移動させます。
# cd /home # cp -av * /mnt/data ‘ec2-user’ -> ‘/mnt/data/ec2-user’ ‘ec2-user/.bashrc’ -> ‘/mnt/data/ec2-user/.bashrc’ ‘ec2-user/.ssh’ -> ‘/mnt/data/ec2-user/.ssh’ ‘ec2-user/.ssh/authorized_keys’ -> ‘/mnt/data/ec2-user/.ssh/authorized_keys’ ‘ec2-user/.bash_logout’ -> ‘/mnt/data/ec2-user/.bash_logout’ ‘ec2-user/.bash_profile’ -> ‘/mnt/data/ec2-user/.bash_profile’ # ls -la /mnt/data/ total 28 drwxr-xr-x 4 root root 4096 Sep 28 06:49 . drwxr-xr-x 3 root root 4096 Sep 28 06:49 .. drwx------ 3 ec2-user ec2-user 4096 Sep 28 06:41 ec2-user drwx------ 2 root root 16384 Sep 28 06:49 lost+found
これでec2-user
のホームディレクトリの中身がコピーされました。
追加ボリュームを/homeへマウント
既存の/home
は不要になりますので、リネームします。
# cd # mv /home /home_org
新たにマウントポイント/home
を作成し、追加ボリュームをアンマウント
# mkdir /home # umount /dev/xvdf
再起動後も正しくマウントするよう、/etc/fstab
に/dev/xvdf /home ext4 defaults 0 2
を追記します。
# cat /etc/fstab # LABEL=/ / ext4 defaults,noatime 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/xvdf /home ext4 defaults 0 2
マウントの確認。
# mount -a #
特にエラーが出なければOKです。
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/xvda1 7.8G 1.2G 6.5G 16% / devtmpfs 490M 60K 490M 1% /dev tmpfs 498M 0 498M 0% /dev/shm /dev/xvdf 9.8G 23M 9.2G 1% /home
これで追加完了です。
まとめ
以上です。
オンプレでは特に何でもない作業でも、クラウドにあるサーバではsshでログインできなくなるとどうすることもできなくなりますので、ちょっとした注意が必要です。